<<<<<<< HEAD Álgebra Matricial com apoio do R

1 Apresentação

As matrizes desempenham um papel de destaque em análises que envolvem diversas variáveis simultaneamente, como as realizadas pelos métodos estatísticos multivariados ou pelos métodos de decisão multi-critérios, de forma que são essenciais para a resolução de problemas nos campos da engenharia, administração, economia, ciência da computação, entre outros.

2 Definição de vetores e matrizes

O Escalar é um valor numérico, uma constante. Os Vetores são sequências de números numa única coluna ou linha. Uma Matriz pode ser difinida como um conjunto de vetores ou como tabelas retagulares de números. Mais formalmente, Chiang (2004) define uma matriz como um arranjo de números, parâmetros ou variáveis.

A seguir, temos a matriz \(\mathbf{A}\) que é formada por elementos que representam números reais. A localização de cada elemento na matriz é indicada por seu subscrito. Por exemplo, \(a_{ij}\) é o elemento da i-ésima linha e j-ésima coluna. Uma matriz possui m linhas e n colunas o que determina a sua ordem ou domensões, indicada como \(m \times n\) (leia “m por n”). A matriz também pode ser denotada de maneira mais compacta simplesmente por \((a_{ij})\), \([a_{ij}]\)ou \(\{a_{ij}\}\).

\[\mathbf{A} = \left[\begin{array} {cccc} a_{11} & a_{12} & \dots & a_{1n}\\ a_{21} & a_{22} & \dots & a_{2n}\\ \vdots & \vdots & & \vdots \\ a_{m1}& a_{m2} & \dots & a_{mn}\\ \end{array}\right] \]

Os vetores \(\mathbf{u}\) e \(\mathbf{v'}\) são respectivamente vetor-coluna com m elementos e vetor-linha com n elementos. Para uma melhor distinção, Chiang (2004) explica que o vetor linha é geralmente marcado por uma aspa simples.

\[\mathbf{u} = \left[\begin{array} {c} u_{1}\\ u_{2}\\ \vdots\\ u_{m}\\ \end{array}\right] \]

\[\mathbf{v'} = \left[\begin{array} {cccc} v_{1} & v_{2} & \dots & v_{n}\\ \end{array}\right] \]

No R, vetores podem ser criados com o comando c() e as matrizes pelos comandos rbind(), cbind() e matrix(). No código a seguir, cria-se um vetor tt que correponde ao tempo de zero a 3,6 com segundos, com dimensão n=25. A matriz X é criada com o comando cbind() que junta dois vetores colunas, atenção que o segundo vetor é criado dentro do comando. A matriz X ordem \(25 \times 2\), como é revelado pelo comando dim() que exibe as suas dimensões.

n <- 25
tt <- seq(from = 0, to = 3.4, length = n) # tempo em segundos
X <- cbind(X1 = tt, X2 = tt^2) # combina em colunas
head(X)
##             X1         X2
## [1,] 0.0000000 0.00000000
## [2,] 0.1416667 0.02006944
## [3,] 0.2833333 0.08027778
## [4,] 0.4250000 0.18062500
## [5,] 0.5666667 0.32111111
## [6,] 0.7083333 0.50173611
dim(X)    # linhas e colunas
## [1] 25  2
dim(X)[1] # nº de linhas
## [1] 25
dim(X)[2] # nº de colunas
## [1] 2

A função matrix(elementos, nrow, ncol) é destinada à criação de matrizes. Um vetor com os elementos são o primeiro argumento; o nrow é o número de linhas e ncol é o número de colunas podendo serem informados com o nome do argumento ou somente com o seu valor.

matrix(c(4,2,9,1),nrow=2,ncol=2)
##      [,1] [,2]
## [1,]    4    9
## [2,]    2    1
matrix(data=5,2,2)
##      [,1] [,2]
## [1,]    5    5
## [2,]    5    5
A <- matrix(1:12, nrow=3,ncol=4)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Os elementos, colunas e linhas dos vetores e matrizes podem ser acessados, indicando-se a sua posição da seguinte forma: A[linha, coluna].

A[3,2] # elemento da 3ª linha, 2ª coluna
## [1] 6
A[3,]  # 3ª linha
## [1]  3  6  9 12
A[,2]  # 2ª coluna
## [1] 4 5 6

Observe que a ordem de preenchimento padrão dos elmentos das matrizes, no R, é por coluna, mas que isso pode ser alterando, ajustando o argumento byrow=TRUE.

A <- matrix(1:12, nrow=3,ncol=4, byrow=TRUE)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

3 Tipos especiais de matrizes

3.1 Matriz diagonal

É comum que faça referência aos valores que ficam na diagnonal das matrizes. A diagonal da matriz pode ser extraída ou substituída pelo comando diag().

S <- matrix(c(4,2,
              9,1),nrow=2,ncol=2, byrow = TRUE)
S
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
diag(S)
## [1] 4 1

Uma matriz diagonal é a que possui todos os elementos nulos exceto na diagonal principal. O comando diag() cria a uma matriz diagonal, bastando informar os valores da diagonal principal.

diag(c(1, 2, 3))
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    2    0
## [3,]    0    0    3

3.2 Matriz escalar

A matriz escalar é uma matriz diagonal em que todos os valores da diagonal são iguais, isto é, \(d_{ii}=d\), \(i=1,\dots, n\).

diag(c(2, 2, 2))
##      [,1] [,2] [,3]
## [1,]    2    0    0
## [2,]    0    2    0
## [3,]    0    0    2

3.3 Matriz identidade

A matriz identidade é uma matriz diagonal cujos valores da diagonal principal são todos iguais a um. O comando diag() cria a uma matriz identidade, bastando informar a sua dimensão.

diag(3)
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

Chiang (2004) explica que as matrizes identidades desempenham um papel similar ao número 1 na álgebra de números, já que a multiplicação de uma matriz por uma matriz identidade compatível não altera os valores de seus elementos.

\[ \mathbf{A} \mathbf{I} = \mathbf{I} \mathbf{A} = \mathbf{A} \]

A <- matrix(c(1,2,3,
              2,0,3),2,3,byrow = TRUE)
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3
I <- diag(nrow(A))
I
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
I%*%A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3
I <- diag(ncol(A))
I
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1
A%*%I
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3

3.4 Matriz nula

Uma matriz chamda de nula se todos os seus elementos forem zero.

matrix(data=0,2,2)
##      [,1] [,2]
## [1,]    0    0
## [2,]    0    0

3.5 Matriz e vetores de uns

Um vetor (\(\mathbf{1_n}\)) e uma matriz(\(\mathbf{J_n}\)) de uns é aqueles em que todos os elementos são iguais a um. Uma aplicação interessante é na somatória dos elementos das matrizes.

\[\mathbf{1} = \left[\begin{array} {c} 1\\ 1\\ 1\\ \end{array}\right] \]

\[\mathbf{J} = \left[\begin{array} {cccc} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \\ \end{array}\right] \]

Interessante notar que

\[\mathbf{J_n}=\mathbf{1_n1_n}^\top\]

uns <- matrix(rep(1, times=3), nrow = 3)
uns
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1
unsLin <- matrix(rep(1, times=3), ncol = 3)
unsLin
##      [,1] [,2] [,3]
## [1,]    1    1    1

4 Operações com matrizes

4.1 Transposição de matrizes

A transposta de uma matriz \(\mathbf{A}, m \times n\) é uma matriz \(\mathbf{A}^\top\) com dimensão \(n \times m\). Na trasposição, as colunas trocam de posição com as linhas da matriz.

X <- matrix(1:12, 
            nrow = 4, ncol = 3, byrow = TRUE) # Cria matriz
X
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
## [4,]   10   11   12
t(X)   # transposta
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

4.2 Multiplicação por um escalar

Quando se multiplica uma matriz por um escalar, todos os seus elementos são multiplicados por esse escalar.

X<-matrix(1:12,nrow = 4, ncol = 3) # Cria matriz
X
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
a <- 2 # escalar
a*X
##      [,1] [,2] [,3]
## [1,]    2   10   18
## [2,]    4   12   20
## [3,]    6   14   22
## [4,]    8   16   24

4.3 Adição e subtração

Para adição ou subtração, as matrizes devem ter as mesmas dimensões e a regra de operação é a seguinte:

\[[a_{ij}] \pm [b_{ij}]=[c_{ij}]\]

A <- matrix(c(2,3,-2,1,2,2),3,2)
B <- matrix(c(1,4,-2,1,2,1),3,2)
A+B
##      [,1] [,2]
## [1,]    3    2
## [2,]    7    4
## [3,]   -4    3
A-B
##      [,1] [,2]
## [1,]    1    0
## [2,]   -1    0
## [3,]    0    1

4.4 Multiplicação

Segundo Weber (1986), duas matrizes A e B podem ser multiplicadas se e somente se o número de colunas de uma for igual número de linhas da outra \(n=n\), logo precisam ser compatíveis.

\[ \mathbf{\underset{(m\times n)}A} \mathbf{\underset{(n\times p)}B} = \mathbf{\underset{(m\times p)}C} \]

Como se pode observar a sequir, A possui duas colunas e B possui duas linhas, logo são compatíveis para multiplicação.

\[ \mathbf{\underset{(1\times2)}A} =\begin{bmatrix} a_{11} & a_{12} \end{bmatrix} \quad\quad \mathbf{\underset{(2\times3)}B} \begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \end{bmatrix} \]

O produto de \(\mathbf{AB}\), que é a matriz \(\mathbf{C}\), tem o mesmo número de linhas de \(\mathbf{A}\) e de colunas de \(\mathbf{B}\), isto é, \(1 \times 3\).

\[ \mathbf{\underset{(1\times2)}A}\mathbf{\underset{(2\times3)}B}= \mathbf{\underset{(1\times3)}C}= \begin{bmatrix} c_{11} & c_{12} &c_{13} \end{bmatrix} \]

Cada elemento do produto de AB será o produto de uma linha de A por uma coluna de B.

\[ \begin{array} {ll} c_{11} & = & a_{11}b_{11}+a_{12}b_{21} \\ c_{12} & = & a_{11}b_{12}+a_{12}b_{22}\\ c_{13} & = & a_{11}b_{13}+a_{12}b_{23} \end{array} \]

Cada elemento de C, como explica Chiang (2004), é então um escalar que nada mais é do que o produto interno da i-ésima linha precedente com a j-ésima coluna da matriz precedida, ou em outra palavras, cada elmento de C será a soma dos produtos das linhas de A pelas colunas de B.

\[ \mathbf{AB} = \begin{pmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n}\\ a_{2,1} & a_{2,2} & \dots & a_{2,n}\\ & & \vdots & \\ a_{m,1} & a_{m,2} & \dots & a_{m,n} \end{pmatrix} \begin{pmatrix} b_{1,1}&\dots & b_{1,p} \\ b_{2,1}&\dots & b_{2,p} \\ & \vdots & \\ b_{n,1}&\dots & b_{n,p} \end{pmatrix} \]

\[ = \begin{pmatrix} \sum_{i=1}^n a_{1,i} b_{i,1} & \dots & \sum_{i=1}^n a_{1,i} b_{i,p}\\ & \vdots & \\ \sum_{i=1}^n a_{m,i} b_{i,1} & \dots & \sum_{i=1}^n a_{m,i} b_{i,p} \end{pmatrix} \]

No R, use %*% para multiplicar matrizes.

D <- matrix(c(3,4,5,6),2)
E <- matrix(c(-1,4,0,7),2)
D;E #veja que as matrizes possuem dimensoes compatáveis: m7(2x2) e m8(2x2).
##      [,1] [,2]
## [1,]    3    5
## [2,]    4    6
##      [,1] [,2]
## [1,]   -1    0
## [2,]    4    7
D%*%E
##      [,1] [,2]
## [1,]   17   35
## [2,]   20   42
G <- matrix(c(1,2,4,3,8,0), nrow = 3,ncol = 2) #3 linhas e 2 colunas
H <- matrix(c(5,9), nrow = 2, ncol = 1)
G%*%H # compatibilidade: m9(3x2) e m8(2x1). Produto=(3x1)
##      [,1]
## [1,]   32
## [2,]   82
## [3,]   20
J <- matrix(c(3,1,4,-1,0,0,2,3,2),3)
m12 <- matrix(c(0,-1,0,-1/5,1/5,2/5,3/10,7/10,-1/10),3)

A multiplicação de vetores encontra diversas aplicações, da estatísticas. As mais comuns são os cálculos da média aritmética, da variância e da soma dos quadrados dos desvios, como serão exemplificados adiante.

A seguir, são demonstrados os produtos de vetores com os elementos 1,2 e 3. O vetor \(\mathbf{u}\), criado pelo comando c(), é um vetor coluna. Os vetores criados com esse comando são sempre vetores colunas. Já o vetor \(\mathbf{v'}\) é um vetor linha criado com a função matrix(), observe que o argumento ncol=3 força a criação de um vetor linha com 3 colunas.

Nos dois casos a multiplicação vetor por próprio só é possível pela transposição que o torna compatível para a operação. Observe que quando um vetor linha precede um vetor coluna, o produto é um escalar, mas quando ocorre o contrário, o resultado é uma matriz quadrada.

u <- c(1,2,3) # vetor coluna (3x1)
u
## [1] 1 2 3
t(u)%*%u     # (1x3)x(3x1)=(1x1)
##      [,1]
## [1,]   14
u%*%t(u)     # (3x1)x(1x3)=(3x3)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    4    6
## [3,]    3    6    9
v <- matrix(c(1,2,3), ncol=3) # Vetor linha (1x3)
v
##      [,1] [,2] [,3]
## [1,]    1    2    3
v %*% t(v)   # (1x3)x(3x1)=(1x1)
##      [,1]
## [1,]   14
sum(v*v)     # Soma do produto: produto interno
## [1] 14
t(v) %*% v   # (3x1)x(1x3)=(3x3)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    4    6
## [3,]    3    6    9

Interessante notar que

\[\mathbf{J_n}=\mathbf{1_n1_n}^\top\]

uns <- matrix(rep(1, times=3), nrow = 3)
uns
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1
J <- matrix(data=1,3,3)
J
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1
uns%*%t(uns) # =J
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1

A seguir, um exemplo simples de somatória dos elementos de um vetor coluna, \(\mathbf{u}\), bastando pré-multiplicá-lo por um vetor linha de uns com dimensão compatível.

\[\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1&1&\dots&1 \end{pmatrix} \begin{pmatrix} u_1\\ u_2\\ \vdots\\ u_n \end{pmatrix} = \sum_{i=1}^n u_i\]

\[\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1&1&1 \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = 6\]

Pode-se ainda se gerar um vetor com a mesma dimensão do vetor original, preenchido com os valores da somatória dos seus elementos. Nesse caso, pré-multiplica-se o vetor \(\mathbf{u}\) \(\mathbf{1}\mathbf{1}^\top\), gerando-se uma matriz de uns com dimensões compatíveis.

\[\mathbf{1}\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1\\ 1\\ 1 \end{pmatrix} \begin{pmatrix} 1&1&1 \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = \begin{pmatrix} 1&1&1\\ 1&1&1\\ 1&1&1\\ \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = \begin{pmatrix} 6\\ 6\\ 6 \end{pmatrix} \]

length(u) # length e não dim porque u foi criado por c()
## [1] 3
um <- matrix(1, nrow = length(u), ncol = 1) # Vetor coluna (3X1)
um
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1
t(um)%*%u  # (1x3)(3x1)=(1x1)
##      [,1]
## [1,]    6
sum(u) # equivalente a somar seus elementos
## [1] 6
um%*%t(um)
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1
um%*%t(um)%*%u
##      [,1]
## [1,]    6
## [2,]    6
## [3,]    6

O mesmo raciocínio é válido para dados em matrizes, tendo cuidado com a compatibilidade. A seguir a matriz \(\mathbf{A}\) com dimensão (\(2 \times 2\)) é pré-multiplicado por um vetor de \(\mathbf{1}\) com \(n=2\),gerando um vetor cujos elementos são as somas das colunas de \(\mathbf{A}\)

A <- matrix(c(4,2,
              9,1),nrow=2,ncol=2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
dim(A)
## [1] 2 2
dim(A)[1]
## [1] 2
uns <- matrix(data=1,nrow=dim(A)[1])
uns
##      [,1]
## [1,]    1
## [2,]    1
t(uns)
##      [,1] [,2]
## [1,]    1    1
t(uns)%*%A
##      [,1] [,2]
## [1,]   13    3
uns%*%t(uns)
##      [,1] [,2]
## [1,]    1    1
## [2,]    1    1
uns%*%t(uns)%*%A
##      [,1] [,2]
## [1,]   13    3
## [2,]   13    3

4.5 Determinante

Weber (1986), explica que o determinante é um escalar característico obtido dos elementos de uma matriz quadrada mediante operações específicas. Somente mantrizes quadradas possuem determinantes.O autor explica que o determinante de uma matriz \(2 \times 2\)

\[ \mathbf{A} = \begin{bmatrix} a_{1,1} & a_{1,2}\\ a_{2,1} & a_{2,2}\\ \end{bmatrix} \]

é calculada da como a diferença dos produtos de suas diagonais.

\[det(\mathbf{A})=|\mathbf{A}|=a_{1,1}a_{2,2}-a_{1,2}a_{2,1}\]

A <- matrix(c(4,2,
            9,1),nrow=2,ncol=2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
det(A)
## [1] -14

O determinante da matriz de covariâncias (S) é a variância generalizada. A variância generalizada é utilizada como um índice de dispersão global para dados multivariados, caracterizando em um único valor quanta variabilidade existe em um conjunto de variáveis. Resume a informação contida em S.

4.6 Traço de uma matriz quadrada

O traço de uma matriz é a somatória dos elementos de sua diagonal principal.

\[ tr(\mathbf{A})=a_{11}+a_{22}+\dots+a_{nn} \]

A <- matrix( seq( 1, 9, 1 ), nrow=3, byrow=TRUE )
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
sum(diag(A))
## [1] 15
library(matrixcalc)
matrix.trace(A)
## [1] 15

Como veremos adiante, a variância total é o traço da matriz de correlação, que é igual ao número de variáveis.

4.7 Inversão de matrizes

Como esclarece Weber (1986), a inversa de uma matriz é utilizada principalmente para resolver problemas que envolvem sistemas de equações lineares.

  • Somente as matrizes quadradas podem ser invertidas;
  • Nem todas as matrizes possuem inversas, mesmo sendo quandrada;
  • Uma matriz A é invertível se \(det(A)\ne0\);
  • A inversa de uma matriz \(\mathbf{X}\) é donotada \(\mathbf{X}^{-1}\)
  • \(\mathbf{X}^{-1}\mathbf{X}= \mathbf{I}\)
X <- matrix(c(1,1,1,
              3,-2,1,
              2,1,-1),3,3, byrow = T)
X
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    3   -2    1
## [3,]    2    1   -1
det(X) # determinante !=zero?
## [1] 13
solve(X)     # transposta
##            [,1]        [,2]       [,3]
## [1,] 0.07692308  0.15384615  0.2307692
## [2,] 0.38461538 -0.23076923  0.1538462
## [3,] 0.53846154  0.07692308 -0.3846154
round(solve(X)%*%X,1) # verificação: =I? 
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

4.8 Interpretação geométrica de vetores

Conforme explica Chiang (2004), um vetor pode ser visto como um conjunto ordenado de n elementos, logo como um ponto no espaço de dimensão n. As retas que partem da origem \((0,0)\) em direção das coordenadas definidas pelos pontos fornecidos pelo vetor são denominadas raio vetor. Geometricamente, não importa se o vetor é coluna ou linha, pois ambos são interpretados como um par ordenado, como o vetor \(\mathbf{u}\).

\[ \mathbf{u}= \begin{bmatrix} 3\\2 \end{bmatrix} \quad \text{ou} \quad \mathbf{u'}= \begin{bmatrix} 3&2 \end{bmatrix} \]

Com apoio do pacote matlib, os significados geométricos do vetor \(\mathbf{u}\) seram gerados no R.

O primeiro exemplo é a multiplcação de um vetor por um escalar, \(2\mathbf{u}\). A seta resultante se sobrepõe a anterior (\(\mathbf{u}\)), mas com o dobro do comprimento.

library(matlib)
u <- c(3,2)
u;2*u
## [1] 3 2
## [1] 6 4
plot(c(0, 5), c(0, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u),
          col=c("blue"),
          cex.lab=2)
vectors(2*u, origin=u,labels="2u",
          col="blue", lty=2)
title(main = "(a) Multiplicação escalar de um vetor, k>1")
-u # -1*u
## [1] -3 -2
plot(c(-4, 4), c(-3, 3), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u),
          col=c("blue"),
          cex.lab=2)
vectors(-u, origin=u,labels=" -u",
          col="blue", lty=2)
title(main = "(b) Multiplicação escalar de um vetor, k<0")
v <- c(1,4)
u+v # soma de vetores
## [1] 4 6
plot(c(0, 6), c(0, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u, v, "u+v"=u + v),
          col=c("red", "blue", "purple"),
          cex.lab=c(2, 2, 2.2))
vectors(u + v, origin=u,
          col="red", lty=2)
vectors(u + v, origin=v,
          col="blue", lty=2)
title(main = "(c) Adição de vetores")
plot(c(-4, 6), c(-4, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind("-u"=-u, v, " v-u"=v - u),
          col=c("red", "blue", "purple"),
          cex.lab=c(2, 2, 2))
vectors(v-u, origin=-u,
          col="red", lty=2)
vectors(v-u, origin=v,
          col="blue", lty=2)
title(main = "(d) Subtração de vetores")

4.9 Dependência linear

Segundo Chiang (2004), um conjunto de vetores é linearmente dependente se (e somente se) um deles pode ser expresso como uma combinação linear dos demais.

A seguir, os vetores \(v1\), \(v2\) e \(v3\) são linearmente dependentes porque \(v3\) é uma combinação linear de \(V1\) e \(v3\):

\[ 3v1-2v2=v3 \]

v1<-c(2,7)
v2<-c(1,8)
v3<-3*v1-2*v2
v1;v2;v3
## [1] 2 7
## [1] 1 8
## [1] 4 5

A relação entre os vetores pode também ser expressa por

\[ 3v1-2v2-v3=0 \]

3*v1-2*v2-v3
## [1] 0 0

Na seção @ref(geom), os gráficos a e b são exemplos de dependência linear, todavia, os gráficos c e d são linearmente independentes, pois os vetores não podem ser expressos como combinação linear um do outro.

library(matlib)
xlim <- c(0,10)
ylim <- c(0,10)
plot( xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="gray")
vectors(v1)
vectors(v2, col="red")
vectors(v3, col="blue")

4.10 Operações com linhas e colunas com o R

O número de linhas e colunas, alám do comando dim() pode ser acessado de maneira mais intuitiva por nrow() e ncol().

X <- matrix(c(3,2,4,3,2,-2,6,1),4,2)
X
##      [,1] [,2]
## [1,]    3    2
## [2,]    2   -2
## [3,]    4    6
## [4,]    3    1
dim(X)
## [1] 4 2
nrow(X) # mesmo que dim(X)[1]
## [1] 4
ncol(X) # mesmo que dim(X)[2]
## [1] 2

Soma e médias de linhas e colunas de matrizes podem ser calculadas pelos comandos a seguir:

A <- matrix(c(2,3,-2,1,2,2),3,2)
A
##      [,1] [,2]
## [1,]    2    1
## [2,]    3    2
## [3,]   -2    2
colSums(A)
## [1] 3 5
rowSums(A)
## [1] 3 5 0
sum(A)
## [1] 8
colMeans(A)
## [1] 1.000000 1.666667
rowMeans(A)
## [1] 1.5 2.5 0.0
mean(A)
## [1] 1.333333

4.11 Autovalores e autovetores

A decomposição própria (decomposição espectral) consiste em escrever uma matriz A diagonalizável qualquer em termos de seus auto-vetores (v) e auto-valores (λ). Como veremos adiante, na técnica de componentes principais, os autovetores representam as direções de maior variabilidade, denominadas componentes principais. Já os autovalores medem a variabioidade explicada dos dadosoriginais fornecidas por cada uma das componentes prinicapis

Desta forma, chega-se a seguinte expressão:

\[ A=\nu^{-1}\lambda\nu \]

5 Aplicações de matrizes

5.1 Estatísticas descritivas de dados multivariados

A álgebra matricial permite a fácil manipulação de dados multivariados. Tomemos como exemplo as notas de uma amostra de 5 estudantes em Matemática, Português e Programação, organizados numa matrix X com n=5 linhas, cada uma representado um estudante, e k=3 colunas, cada uma com as notas dos alunos na respectiva disciplina.

Para o cálculo das médias, variância e desvio padrão de cada estudante, deve-se realizar os seguintes cálculos:

  • Calcule as médias;
  • Gere uma matriz de desvios;
  • Calcule a soma dos quadrados dos desvios;
  • Divida pelo número de linhas ou número de observações para encontrar a matriz de variância-covariância.

A médias de cada coluna pode ser obtidas pela seguinte fórmula: \[ \mathbf{\bar{x}}=\mathbf{1'X} \frac{1}{n} \]

Uma matriz com vetores de médias para uma subtração posterior pode ser gerada pela seguinte equação: \[ \mathbf{\bar{X}}=\mathbf{11'X} \frac{1}{n} \] Os desvios são calculados como a seguir

\[ \mathbf{D} = \mathbf{X} - \mathbf{11'X}\frac{1}{n} \] ou \[ \mathbf{D} = \mathbf{X} - \mathbf{\bar{X}} \] Matriz de variância-covariância:

\[ \mathbf{S} = (\mathbf{X} - \mathbf{\bar{X}})'(\mathbf{X} - \mathbf{\bar{X}})=\mathbf{D'D}\frac{1}{n-1} \]

X <- matrix(c(90,   60, 90,
              90,   90, 30,
              60,   60, 60,
              60,   60, 90,
              30,   30, 30),byrow=T,nrow = 5,ncol = 3)
n <- nrow(X)
uns <- matrix(rep(1, times = n), ncol = 1)
t(uns)%*%X*(1/n)# médias
##      [,1] [,2] [,3]
## [1,]   66   60   60
uns%*%t(uns)%*%X*(1/n) # matriz com colunas de médias
##      [,1] [,2] [,3]
## [1,]   66   60   60
## [2,]   66   60   60
## [3,]   66   60   60
## [4,]   66   60   60
## [5,]   66   60   60
D <- X-uns%*%t(uns)%*%X*(1/n) # desvios
D
##      [,1] [,2] [,3]
## [1,]   24    0   30
## [2,]   24   30  -30
## [3,]   -6    0    0
## [4,]   -6    0   30
## [5,]  -36  -30  -30
DD<-t(D)%*%D # desvios ao quadrado
DD
##      [,1] [,2] [,3]
## [1,] 2520 1800  900
## [2,] 1800 1800    0
## [3,]  900    0 3600
S <- DD*(1/(n-1)) # Var-Cov
S
##      [,1] [,2] [,3]
## [1,]  630  450  225
## [2,]  450  450    0
## [3,]  225    0  900

Claro que o entendimmento do processo é importante para desenvolvimentos futuros; todavia, o R é capaz executar os mesmos cálculos com funções simples:

colMeans(X)
## [1] 66 60 60
var(X)
##      [,1] [,2] [,3]
## [1,]  630  450  225
## [2,]  450  450    0
## [3,]  225    0  900

No R matriz de variância-covariância pode ser tranformada em matriz de correlações com a função cov2cor()

R<-cov2cor(S)
R
##           [,1]      [,2]      [,3]
## [1,] 1.0000000 0.8451543 0.2988072
## [2,] 0.8451543 1.0000000 0.0000000
## [3,] 0.2988072 0.0000000 1.0000000
sum(diag(S)) # Variância total (também = sum(out$values))
## [1] 1980
det(S)
## [1] 50118750
eigen(S)
## eigen() decomposition
## $values
## [1] 1137.58744  786.38798   56.02458
## 
## $vectors
##           [,1]       [,2]       [,3]
## [1,] 0.6558023 -0.3859988  0.6487899
## [2,] 0.4291978 -0.5163664 -0.7410499
## [3,] 0.6210577  0.7644414 -0.1729644
out<-eigen(S)
V<- out$vectors
sum(out$values) # Variância total (também =sum(diag(S)))
## [1] 1980

5.2 Resolução de sistemas de equações lineares

Como esclarece Weber (1986), a inversa de uma matriz é utilizada principalmente para resolver problemas que envolvem sistemas de equações lineares, como o sistema a seguir que possui três equações:

\[ \begin{align*} b_1 + b_2 + b_3 &=6\\ 3b_1 - 2b_2 + b_3 &= 2\\ 2b_1 + b_2 - b_3 &= 1 \end{align*} \]

que pode ser escrito

\[\begin{bmatrix} 1&1&1\\ 3&-2&1\\ 2&1&-1 \end{bmatrix} \begin{bmatrix} b_1\\ b_2\\ b_3 \end{bmatrix} = \begin{bmatrix} b_1 + b_2 + b3 \\ 3b_1 - 2b_2 + b_3 \\ 2b_1 + b_2 - b_3 \end{bmatrix} \]

ou

\[\mathbf{X}_{m\times n}\mathbf{b}_{n\times 1}=\mathbf{y}_{m\times 1}\]

Se \(X\) for quadrada, \(m=n\) e não singular, ou seja possui uma inversa, o sistema de equações lineares simultâneas pode ser resolvido da seguinte forma:

\[ \mathbf{b}_{n\times 1}=\mathbf{X}_{n\times n}^{-1}\mathbf{y}_{n\times 1} \]

No R, a inversão de matrizes pode ser realizada pelo comando solve() sobre a matriz \(\mathbf{X}\). A solução do sistema pode ser encontrada, multiplicando o valor retornado pelo solve(X) por \(\mathbf{y}\) ou, diretamente, dentro do comando. Os valores no vetor resultante são os valores de \(\mathbf{b}_{n\times 1}\), ou seja, \(b_1=1\), \(b_2=2\) e \(b_3=3\).

X <- matrix(c(1,1,1,
              3,-2,1,
              2,1,-1),3,3, byrow = T)

y <- matrix(c(6,2,1),3,1)
solve(X)     # transposta
##            [,1]        [,2]       [,3]
## [1,] 0.07692308  0.15384615  0.2307692
## [2,] 0.38461538 -0.23076923  0.1538462
## [3,] 0.53846154  0.07692308 -0.3846154
solve(X)%*%y # Equivalente a solve(X,y)
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3
solve(X, y)  # Equivalente a solve(X)%*%y
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3
A<-matrix(c(6,1,4,3,4,-1,1,-2,5),3)
d<-matrix(c(22,12,10),3,1)
solve(A,d) #melhor opção
##      [,1]
## [1,]    2
## [2,]    3
## [3,]    1
solve(A)%*%d
##      [,1]
## [1,]    2
## [2,]    3
## [3,]    1

5.3 Média

\(\bar{Y}=\frac{1}{N} Y_i\) e \(\mbox{var}(Y)=\frac{1}{N} \sum_{i=1}^N (Y_i - \bar{Y})^2\)

\[ A= \begin{pmatrix} 1\\ 1\\ \vdots\\ 1 \end{pmatrix} \]

\[ \frac{1}{N} \mathbf{A}^\top Y = \frac{1}{N} \begin{pmatrix} 1&1&\dots&1 \end{pmatrix} \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} = \frac{1}{N} \sum_{i=1}^N Y_i = \bar{Y} \]

Tomemos o exemplo de Neto, Scarminio, and Bruns (2010), em que o rendimento percentual numa reação química é registrado para diversas temperaturas (x).

x y
40 60
45 70
50 77
55 86
60 91

\[ \mathbf{Y} = \begin{pmatrix} 60\\ 70\\ 77\\ 86\\ 91 \\ \end{pmatrix} \]

\[\bar{Y}= \frac{1}{N} \mathbf{1}^\top \mathbf{Y} = \frac{1}{5} \begin{pmatrix} 1&1&1&1&1 \end{pmatrix} \begin{pmatrix} 60\\ 70\\ 77\\ 86\\ 91 \\ \end{pmatrix}=76,8 \]

#library(UsingR)
data(father.son,package="UsingR")
y <- father.son$sheight
print(mean(y))
## [1] 68.68407
N <- length(y)
Y<- matrix(y,N,1)
A <- matrix(1,N,1)
barY=t(A)%*%Y / N

print(barY)
##          [,1]
## [1,] 68.68407

5.4 Variância

\[ \mathbf{r}\equiv \begin{pmatrix} Y_1 - \bar{Y}\\ \vdots\\ Y_N - \bar{Y} \end{pmatrix}, \frac{1}{N} \mathbf{r}^\top\mathbf{r} = \frac{1}{N}\sum_{i=1}^N (Y_i - \bar{Y})^2 \]

\(r^\top r\)

r <- y - barY
## Warning in y - barY: Recycling array of length 1 in vector-array arithmetic is deprecated.
##   Use c() or as.vector() instead.
crossprod(r)/N
##          [,1]
## [1,] 7.915196
(t(r)%*%r)/N
##          [,1]
## [1,] 7.915196

5.5 Variância

O determinante de uma matriz representa a variância generalizada das várias variáveis. Isto é, ele caracteriza em um único valor quanta variabilidade existe em um conjunto de variáveis.

5.6 Soma dos quadrados

5.7 Modelos lineares

\[ \mathbf{Y} = \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} , \mathbf{X} = \begin{pmatrix} 1&x_1\\ 1&x_2\\ \vdots\\ 1&x_N \end{pmatrix} , \mathbf{\beta} = \begin{pmatrix} \beta_0\\ \beta_1 \end{pmatrix} \mbox{ and } \mathbf{\varepsilon} = \begin{pmatrix} \varepsilon_1\\ \varepsilon_2\\ \vdots\\ \varepsilon_N \end{pmatrix} \]

\[ Y_i = \beta_0 + \beta_1 x_i + \varepsilon_i, i=1,\dots,N \]

\[ , \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} = \begin{pmatrix} 1&x_1\\ 1&x_2\\ \vdots\\ 1&x_N \end{pmatrix} \begin{pmatrix} \beta_0\\ \beta_1 \end{pmatrix} + \begin{pmatrix} \varepsilon_1\\ \varepsilon_2\\ \vdots\\ \varepsilon_N \end{pmatrix} \]

\[ \mathbf{Y}=\mathbf{X}\boldsymbol{\beta}+\boldsymbol{\varepsilon} \]

Referências

Chiang, Alpha C. 2004. Matemática Para Economistas. Makron Books, Pearson Education.
Neto, Benı́cio Barros, Ieda Spacino Scarminio, and Roy Edward Bruns. 2010. Como Fazer Experimentos: Pesquisa e Desenvolvimento Na Ciência e Na Indústria. Bookman Editora.
Weber, Jean E. 1986. Matemática Para Economia e Administração. Rio de Janeiro-RJ: Harper & Row do Brasil.
======= Álgebra Matricial com apoio do R

1 Apresentação

As matrizes desempenham um papel de destaque em análises que envolvem diversas variáveis simultaneamente, como as realizadas pelos métodos estatísticos multivariados ou pelos métodos de decisão multi-critérios, de forma que são essenciais para a resolução de problemas nos campos da engenharia, administração, economia, ciência da computação, entre outros.

2 Definição de vetores e matrizes

O Escalar é um valor numérico, uma constante. Os Vetores são sequências de números numa única coluna ou linha. Uma Matriz pode ser difinida como um conjunto de vetores ou como tabelas retagulares de números. Mais formalmente, Chiang (2004) define uma matriz como um arranjo de números, parâmetros ou variáveis.

A seguir, temos a matriz \(\mathbf{A}\) que é formada por elementos que representam números reais. A localização de cada elemento na matriz é indicada por seu subscrito. Por exemplo, \(a_{ij}\) é o elemento da i-ésima linha e j-ésima coluna. Uma matriz possui m linhas e n colunas o que determina a sua ordem ou domensões, indicada como \(m \times n\) (leia “m por n”). A matriz também pode ser denotada de maneira mais compacta simplesmente por \((a_{ij})\), \([a_{ij}]\)ou \(\{a_{ij}\}\).

\[\mathbf{A} = \left[\begin{array} {cccc} a_{11} & a_{12} & \dots & a_{1n}\\ a_{21} & a_{22} & \dots & a_{2n}\\ \vdots & \vdots & & \vdots \\ a_{m1}& a_{m2} & \dots & a_{mn}\\ \end{array}\right] \]

Os vetores \(\mathbf{u}\) e \(\mathbf{v'}\) são respectivamente vetor-coluna com m elementos e vetor-linha com n elementos. Para uma melhor distinção, Chiang (2004) explica que o vetor linha é geralmente marcado por uma aspa simples.

\[\mathbf{u} = \left[\begin{array} {c} u_{1}\\ u_{2}\\ \vdots\\ u_{m}\\ \end{array}\right] \]

\[\mathbf{v'} = \left[\begin{array} {cccc} v_{1} & v_{2} & \dots & v_{n}\\ \end{array}\right] \]

No R, vetores podem ser criados com o comando c() e as matrizes pelos comandos rbind(), cbind() e matrix(). No código a seguir, cria-se um vetor tt que correponde ao tempo de zero a 3,6 com segundos, com dimensão n=25. A matriz X é criada com o comando cbind() que junta dois vetores colunas, atenção que o segundo vetor é criado dentro do comando. A matriz X ordem \(25 \times 2\), como é revelado pelo comando dim() que exibe as suas dimensões.

n <- 25
tt <- seq(from = 0, to = 3.4, length = n) # tempo em segundos
X <- cbind(X1 = tt, X2 = tt^2) # combina em colunas
head(X)
##             X1         X2
## [1,] 0.0000000 0.00000000
## [2,] 0.1416667 0.02006944
## [3,] 0.2833333 0.08027778
## [4,] 0.4250000 0.18062500
## [5,] 0.5666667 0.32111111
## [6,] 0.7083333 0.50173611
dim(X)    # linhas e colunas
## [1] 25  2
dim(X)[1] # nº de linhas
## [1] 25
dim(X)[2] # nº de colunas
## [1] 2

A função matrix(elementos, nrow, ncol) é destinada à criação de matrizes. Um vetor com os elementos são o primeiro argumento; o nrow é o número de linhas e ncol é o número de colunas podendo serem informados com o nome do argumento ou somente com o seu valor.

matrix(c(4,2,9,1),nrow=2,ncol=2)
##      [,1] [,2]
## [1,]    4    9
## [2,]    2    1
matrix(data=5,2,2)
##      [,1] [,2]
## [1,]    5    5
## [2,]    5    5
A <- matrix(1:12, nrow=3,ncol=4)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

Os elementos, colunas e linhas dos vetores e matrizes podem ser acessados, indicando-se a sua posição da seguinte forma: A[linha, coluna].

A[3,2] # elemento da 3ª linha, 2ª coluna
## [1] 6
A[3,]  # 3ª linha
## [1]  3  6  9 12
A[,2]  # 2ª coluna
## [1] 4 5 6

Observe que a ordem de preenchimento padrão dos elmentos das matrizes, no R, é por coluna, mas que isso pode ser alterando, ajustando o argumento byrow=TRUE.

A <- matrix(1:12, nrow=3,ncol=4, byrow=TRUE)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

3 Tipos especiais de matrizes

3.1 Matriz diagonal

É comum que faça referência aos valores que ficam na diagnonal das matrizes. A diagonal da matriz pode ser extraída ou substituída pelo comando diag().

S <- matrix(c(4,2,
              9,1),nrow=2,ncol=2, byrow = TRUE)
S
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
diag(S)
## [1] 4 1

Uma matriz diagonal é a que possui todos os elementos nulos exceto na diagonal principal. O comando diag() cria a uma matriz diagonal, bastando informar os valores da diagonal principal.

diag(c(1, 2, 3))
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    2    0
## [3,]    0    0    3

3.2 Matriz escalar

A matriz escalar é uma matriz diagonal em que todos os valores da diagonal são iguais, isto é, \(d_{ii}=d\), \(i=1,\dots, n\).

diag(c(2, 2, 2))
##      [,1] [,2] [,3]
## [1,]    2    0    0
## [2,]    0    2    0
## [3,]    0    0    2

3.3 Matriz identidade

A matriz identidade é uma matriz diagonal cujos valores da diagonal principal são todos iguais a um. O comando diag() cria a uma matriz identidade, bastando informar a sua dimensão.

diag(3)
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

Chiang (2004) explica que as matrizes identidades desempenham um papel similar ao número 1 na álgebra de números, já que a multiplicação de uma matriz por uma matriz identidade compatível não altera os valores de seus elementos.

\[ \mathbf{A} \mathbf{I} = \mathbf{I} \mathbf{A} = \mathbf{A} \]

A <- matrix(c(1,2,3,
              2,0,3),2,3,byrow = TRUE)
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3
I <- diag(nrow(A))
I
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
I%*%A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3
I <- diag(ncol(A))
I
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1
A%*%I
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    0    3

3.4 Matriz nula

Uma matriz chamda de nula se todos os seus elementos forem zero.

matrix(data=0,2,2)
##      [,1] [,2]
## [1,]    0    0
## [2,]    0    0

3.5 Matriz e vetores de uns

Um vetor (\(\mathbf{1_n}\)) e uma matriz(\(\mathbf{J_n}\)) de uns é aqueles em que todos os elementos são iguais a um. Uma aplicação interessante é na somatória dos elementos das matrizes.

\[\mathbf{1} = \left[\begin{array} {c} 1\\ 1\\ 1\\ \end{array}\right] \]

\[\mathbf{J} = \left[\begin{array} {cccc} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \\ \end{array}\right] \]

Interessante notar que

\[\mathbf{J_n}=\mathbf{1_n1_n}^\top\]

uns <- matrix(rep(1, times=3), nrow =3)
uns
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1
J <- matrix(data=1,3,3)
J
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1
uns%*%t(uns) # =J
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1

4 Operações com matrizes

4.1 Multiplicação por um escalar

Quando se multiplica uma matriz por um escalar, todos os seus elementos são multiplicados por esse escalar.

X<-matrix(1:12,nrow = 4, ncol = 3) # Cria matriz
X
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
a <- 2 # escalar
a*X
##      [,1] [,2] [,3]
## [1,]    2   10   18
## [2,]    4   12   20
## [3,]    6   14   22
## [4,]    8   16   24

4.2 Adição e subtração

Para adição ou subtração, as matrizes devem ter as mesmas dimensões e a regra de operação é a seguinte:

\[[a_{ij}] \pm [b_{ij}]=[c_{ij}]\]

A <- matrix(c(2,3,-2,1,2,2),3,2)
B <- matrix(c(1,4,-2,1,2,1),3,2)
A+B
##      [,1] [,2]
## [1,]    3    2
## [2,]    7    4
## [3,]   -4    3
A-B
##      [,1] [,2]
## [1,]    1    0
## [2,]   -1    0
## [3,]    0    1

4.3 Multiplicação

Segundo Weber (1986), duas matrizes A e B podem ser multiplicadas se, e somente se o número de colunas de uma for igual número de linhas da outra \(n=n\), logo precisam ser compatíveis.

\[ \mathbf{\underset{(m\times n)}A} \mathbf{\underset{(n\times p)}B} = \mathbf{\underset{(m\times p)}C} \]

Como se pode observar a sequir, A possui duas colunas e B possui duas linhas, logo são compatíveis para multiplicação.

\[ \mathbf{\underset{(1\times2)}A} =\begin{bmatrix} a_{11} & a_{12} \end{bmatrix} \quad\quad \mathbf{\underset{(2\times3)}B} \begin{bmatrix} b_{11} & b_{12} & b_{13} \\ b_{21} & b_{22} & b_{23} \end{bmatrix} \]

O produto de \(\mathbf{AB}\), \(\mathbf{C}\), tem o mesmo número de linhas de \(\mathbf{A}\) e de colunas de \(\mathbf{B}\), isto é, \(1 \times 3\).

\[ \mathbf{\underset{(1\times2)}A}\mathbf{\underset{(2\times3)}B}= \mathbf{\underset{(1\times3)}C}= \begin{bmatrix} c_{11} & c_{12} &c_{13} \end{bmatrix} \]

Cada elemento do produto de AB será o produto de uma linha de A por uma coluna de B.

\[ \begin{array} {ll} c_{11} & = & a_{11}b_{11}+a_{12}b_{21} \\ c_{12} & = & a_{11}b_{12}+a_{12}b_{22}\\ c_{13} & = & a_{11}b_{13}+a_{12}b_{23} \end{array} \]

Cada elemento de C, como explica Chiang (2004), é então um escalar que nada mais é do que o produto interno da i-ésima linha precedente com a j-ésima coluna da matriz precedida, ou em outra palavras, cada elmento de C será a soma dos produtos das linhas de A pelas colunas de B.

\[ \mathbf{AB} = \begin{pmatrix} a_{1,1} & a_{1,2} & \dots & a_{1,n}\\ a_{2,1} & a_{2,2} & \dots & a_{2,n}\\ & & \vdots & \\ a_{m,1} & a_{m,2} & \dots & a_{m,n} \end{pmatrix} \begin{pmatrix} b_{1,1}&\dots & b_{1,p} \\ b_{2,1}&\dots & b_{2,p} \\ & \vdots & \\ b_{n,1}&\dots & b_{n,p} \end{pmatrix} \]

\[ = \begin{pmatrix} \sum_{i=1}^n a_{1,i} b_{i,1} & \dots & \sum_{i=1}^n a_{1,i} b_{i,p}\\ & \vdots & \\ \sum_{i=1}^n a_{m,i} b_{i,1} & \dots & \sum_{i=1}^n a_{m,i} b_{i,p} \end{pmatrix} \]

No R, use %*% para multiplicar matrizes.

m7 <- matrix(c(3,4,5,6),2)
m8 <- matrix(c(-1,4,0,7),2)
m7;m8 #veja que as matrizes possuem dimensoes compatáveis: m7(2x2) e m8(2x2).
##      [,1] [,2]
## [1,]    3    5
## [2,]    4    6
##      [,1] [,2]
## [1,]   -1    0
## [2,]    4    7
m7%*%m8
##      [,1] [,2]
## [1,]   17   35
## [2,]   20   42
m9 <- matrix(c(1,2,4,3,8,0),3,2) #3 linhas e 2 colunas
m10 <- matrix(c(5,9),2,1)
m9%*%m10 # compatibilidade: m9(3x2) e m8(2x1). Produto=(3x1)
##      [,1]
## [1,]   32
## [2,]   82
## [3,]   20
m11 <- matrix(c(3,1,4,-1,0,0,2,3,2),3)
m12 <- matrix(c(0,-1,0,-1/5,1/5,2/5,3/10,7/10,-1/10),3)

A multiplicação de vetores encontra diversas aplicações, da estatísticas. As mais comuns são os cálculos da média aritmética, da veriância e da soma dos quadrados dos desvios, como serão exemplificados adiante.

A seguir, são demonstrados os produtos de vetores com os elementos 1,2 e 3. O vetor \(\mathbf{u}\), criado pelo comando c(), é um vetor coluna. Os vetores criados com esse comando são sempre vetores colunas. Já o vetor \(\mathbf{v'}\) é um vetor linha criado com a função matrix(), observe que o argumento ncol=3 força a criação de um vetor linha com 3 colunas.

Nos dois casos a multiplicação vetor por próprio só é possível pela transposição que o torna compatível para a operação. Observe que quando um vetor linha precede um vetor coluna, o produto é um escalar, mas quando ocorre o contrário, o resultado é uma matriz quadrada.

u <- c(1,2,3) # vetor coluna (3x1)
u
## [1] 1 2 3
t(u)%*%u     # (1x3)x(3x1)=(1x1)
##      [,1]
## [1,]   14
u%*%t(u)     # (3x1)x(1x3)=(3x3)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    4    6
## [3,]    3    6    9
v <- matrix(c(1,2,3),ncol=3) # Vetor linha (1x3)
v
##      [,1] [,2] [,3]
## [1,]    1    2    3
v %*% t(v)   # (1x3)x(3x1)=(1x1)
##      [,1]
## [1,]   14
sum(v*v)     # Soma do produto: produto interno
## [1] 14
t(v) %*% v   # (3x1)x(1x3)=(3x3)
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    2    4    6
## [3,]    3    6    9

A seguir um exemplos simples de somatória dos elementos de um vetor coluna, \(\mathbf{u}\), bastando pré-multiplicá-lo por um vetor linha de uns com dimensão compatível.

\[\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1&1&\dots&1 \end{pmatrix} \begin{pmatrix} u_1\\ u_2\\ \vdots\\ u_n \end{pmatrix} = \sum_{i=1}^n u_i\]

\[\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1&1&1 \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = 6\]

Pode-se ainda se gerar um vetor com a mesma dimensão do vetor original, preenchido com os valores da somatória dos seus elementos. Nesse caso, pré-multiplica-se o vetor \(\mathbf{u}\) \(\mathbf{1}\mathbf{1}^\top\), gerando-se uma matriz de uns com dimensões compatíveis.

\[\mathbf{1}\mathbf{1}^\top \mathbf{u} = \begin{pmatrix} 1\\ 1\\ 1 \end{pmatrix} \begin{pmatrix} 1&1&1 \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = \begin{pmatrix} 1&1&1\\ 1&1&1\\ 1&1&1\\ \end{pmatrix} \begin{pmatrix} 1\\ 2\\ 3 \end{pmatrix} = \begin{pmatrix} 6\\ 6\\ 6 \end{pmatrix} \]

length(u) # length e não dim porque u foi criado por c()
## [1] 3
um <- matrix(1, nrow = length(u), ncol = 1) # Vetor coluna (3X1)
um
##      [,1]
## [1,]    1
## [2,]    1
## [3,]    1
t(um)%*%u  # (1x3)(3x1)=(1x1)
##      [,1]
## [1,]    6
sum(u) # equivalente a somar seus elementos
## [1] 6
um%*%t(um)
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    1    1    1
## [3,]    1    1    1
um%*%t(um)%*%u
##      [,1]
## [1,]    6
## [2,]    6
## [3,]    6

O mesmo raciocínio é válido para dados em matrizes, tendo cuidado com a compatibilidade. A seguir a matriz \(\mathbf{A}\) com dimensão (\(2 \times 2\)) é pré-multiplicado por um vetor de \(\mathbf{1}\) com \(n=2\),gerando um vetor cujos elementos são as somas das colunas de \(\mathbf{A}\)

A <- matrix(c(4,2,
              9,1),nrow=2,ncol=2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
dim(A)
## [1] 2 2
dim(A)[1]
## [1] 2
uns <- matrix(data=1,nrow=dim(A)[1])
uns
##      [,1]
## [1,]    1
## [2,]    1
t(uns)
##      [,1] [,2]
## [1,]    1    1
t(uns)%*%A
##      [,1] [,2]
## [1,]   13    3
uns%*%t(uns)
##      [,1] [,2]
## [1,]    1    1
## [2,]    1    1
uns%*%t(uns)%*%A
##      [,1] [,2]
## [1,]   13    3
## [2,]   13    3

4.4 Determinante

Weber (1986), explica que o determinante é um escalar característico obtido dos elementos de uma matriz quadrada mediante operações específicas. Somente mantrizes quadradas possuem determinantes.O autor explica que o determinante de uma matriz \(2 \times 2\)

\[ \mathbf{A} = \begin{bmatrix} a_{1,1} & a_{1,2}\\ a_{2,1} & a_{2,2}\\ \end{bmatrix} \]

é calculada da como a diferença dos produtos de suas diagonais.

\[det(\mathbf{A})=|\mathbf{A}|=a_{1,1}a_{2,2}-a_{1,2}a_{2,1}\]

A <- matrix(c(4,2,
            9,1),nrow=2,ncol=2, byrow = TRUE)
A
##      [,1] [,2]
## [1,]    4    2
## [2,]    9    1
det(A)
## [1] -14

O determinante da matriz de covariâncias (S) é a variância generalizada. A variância generalizada é utilizada como um índice de dispersão global para dados multivariados, caracterizando em um único valor quanta variabilidade existe em um conjunto de variáveis. Resume a informação contida em S.

4.5 Traço de uma matriz quadrada

O traço de uma matriz é a somatória dos elementos de sua diagonal principal.

\[ tr(\mathbf{A})=a_{11}+a_{22}+\dots+a_{nn} \]

A <- matrix( seq( 1, 9, 1 ), nrow=3, byrow=TRUE )
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
## [3,]    7    8    9
sum(diag(A))
## [1] 15
library(matrixcalc)
matrix.trace(A)
## [1] 15

Como veremos adiante, a variância total é o traço da matriz de correlação, que é igual ao número de variáveis.

4.6 Transposição de matrizes

Na trasposição, as colunas trocam de posicação com as linhas da matriz. a transposta de uma matriz \(\mathbf{A}, m \times n\) é uma matriz \(\mathbf{A}^\top\) com dimensão \(n \times m\).

t(X)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12

4.7 Inversão de matrizes

Como esclarece Weber (1986), a inversa de uma matriz é utilizada principalmente para resolver problemas que envolvem sistemas de equações lineares.

  • Somente as matrizes quadradas podem ser invertidas;
  • Nem todas as matrizes possuem inversas, mesmo sendo quandrada;
  • Uma matriz A é invertível se \(det(A)\ne0\);
  • A inversa de uma matriz \(\mathbf{X}\) é donotada \(\mathbf{X}^{-1}\)
  • \(\mathbf{X}^{-1}\mathbf{X}= \mathbf{I}\)
X <- matrix(c(1,1,1,
              3,-2,1,
              2,1,-1),3,3, byrow = T)
X
##      [,1] [,2] [,3]
## [1,]    1    1    1
## [2,]    3   -2    1
## [3,]    2    1   -1
det(X) # determinante !=zero?
## [1] 13
solve(X)     # transposta
##            [,1]        [,2]       [,3]
## [1,] 0.07692308  0.15384615  0.2307692
## [2,] 0.38461538 -0.23076923  0.1538462
## [3,] 0.53846154  0.07692308 -0.3846154
round(solve(X)%*%X,1) # verificação: =I? 
##      [,1] [,2] [,3]
## [1,]    1    0    0
## [2,]    0    1    0
## [3,]    0    0    1

4.8 Interpretação geométrica de vetores

Conforme explica Chiang (2004), um vetor pode ser visto como um conjunto ordenado de n elementos, logo como um ponto no espaço de dimensão n. As retas que partem da origem \((0,0)\) em direção das coordenadas definidas pelos pontos fornecidos pelo vetor são denominadas raio vetor. Geometricamente, não importa se o vetor é coluna ou linha, pois ambos são interpretados como um par ordenado, como o vetor \(\mathbf{u}\).

\[ \mathbf{u}= \begin{bmatrix} 3\\2 \end{bmatrix} \quad \text{ou} \quad \mathbf{u'}= \begin{bmatrix} 3&2 \end{bmatrix} \]

Com apoio do pacote matlib, os significados geométricos do vetor \(\mathbf{u}\) seram gerados no R.

O primeiro exemplo é a multiplcação de um vetor por um escalar, \(2\mathbf{u}\). A seta resultante se sobrepõe a anterior (\(\mathbf{u}\)), mas com o dobro do comprimento.

library(matlib)
u <- c(3,2)
u;2*u
## [1] 3 2
## [1] 6 4
plot(c(0, 5), c(0, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u),
          col=c("blue"),
          cex.lab=2)
vectors(2*u, origin=u,labels="2u",
          col="blue", lty=2)
title(main = "(a) Multiplicação escalar de um vetor, k>1")
-u # -1*u
## [1] -3 -2
plot(c(-4, 4), c(-3, 3), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u),
          col=c("blue"),
          cex.lab=2)
vectors(-u, origin=u,labels=" -u",
          col="blue", lty=2)
title(main = "(b) Multiplicação escalar de um vetor, k<0")
v <- c(1,4)
u+v # soma de vetores
## [1] 4 6
plot(c(0, 6), c(0, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind(u, v, "u+v"=u + v),
          col=c("red", "blue", "purple"),
          cex.lab=c(2, 2, 2.2))
vectors(u + v, origin=u,
          col="red", lty=2)
vectors(u + v, origin=v,
          col="blue", lty=2)
title(main = "(c) Adição de vetores")
plot(c(-4, 6), c(-4, 6), type="n",
       xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="darkgray")
vectors(rbind("-u"=-u, v, " v-u"=v - u),
          col=c("red", "blue", "purple"),
          cex.lab=c(2, 2, 2))
vectors(v-u, origin=-u,
          col="red", lty=2)
vectors(v-u, origin=v,
          col="blue", lty=2)
title(main = "(d) Subtração de vetores")

4.9 Dependência linear

Segundo Chiang (2004), um conjunto de vetores é linearmente dependente se (e somente se) um deles pode ser expresso como uma combinação linear dos demais.

A seguir, os vetores \(v1\), \(v2\) e \(v3\) são linearmente dependentes porque \(v3\) é uma combinação linear de \(V1\) e \(v3\):

\[ 3v1-2v2=v3 \]

v1<-c(2,7)
v2<-c(1,8)
v3<-3*v1-2*v2
v1;v2;v3
## [1] 2 7
## [1] 1 8
## [1] 4 5

A relação entre os vetores pode também ser expressa por

\[ 3v1-2v2-v3=0 \]

3*v1-2*v2-v3
## [1] 0 0

Na seção @ref(geom), os gráficos a e b são exemplos de dependência linear, todavia, os gráficos c e d são linearmente independentes, pois os vetores não podem ser expressos como combinação linear um do outro.

library(matlib)
xlim <- c(0,10)
ylim <- c(0,10)
plot( xlim, ylim, type="n", xlab="X", ylab="Y", asp=1)
abline(v=0, h=0, col="gray")
vectors(v1)
vectors(v2, col="red")
vectors(v3, col="blue")

4.10 Operações com linhas e colunas com o R

O número de linhas e colunas, alám do comando dim() pode ser acessado de maneira mais intuitiva por nrow() e ncol().

X <- matrix(c(3,2,4,3,2,-2,6,1),4,2)
X
##      [,1] [,2]
## [1,]    3    2
## [2,]    2   -2
## [3,]    4    6
## [4,]    3    1
dim(X)
## [1] 4 2
nrow(X) # mesmo que dim(X)[1]
## [1] 4
ncol(X) # mesmo que dim(X)[2]
## [1] 2

Soma e médias de linhas e colunas de matrizes podem ser calculadas pelos comandos a seguir:

A <- matrix(c(2,3,-2,1,2,2),3,2)
A
##      [,1] [,2]
## [1,]    2    1
## [2,]    3    2
## [3,]   -2    2
colSums(A)
## [1] 3 5
rowSums(A)
## [1] 3 5 0
sum(A)
## [1] 8
colMeans(A)
## [1] 1.000000 1.666667
rowMeans(A)
## [1] 1.5 2.5 0.0
mean(A)
## [1] 1.333333

4.11 Autovalores e autovetores

A decomposição própria (decomposição espectral) consiste em escrever uma matriz A diagonalizável qualquer em termos de seus auto-vetores (v) e auto-valores (λ). Como veremos adiante, na técnica de componentes principais, os autovetores representam as direções de maior variabilidade, denominadas componentes principais. Já os autovalores medem a variabioidade explicada dos dadosoriginais fornecidas por cada uma das componentes prinicapis

Desta forma, chega-se a seguinte expressão:

\[ A=\nu^{-1}\lambda\nu \]

5 Aplicações de matrizes

5.1 Estatísticas descritivas de dados multivariados

A álgebra matricial permite a fácil manipulação de dados multivariados. Tomemsos como exemplo as notas de uma amostra de 5 estudantes em Matemática, Português e Arte, organizados numa matrix X com n=5 linhas, cada uma representado um estudante, e k=3 colunas, cada uma com as notas dos alunos na respectiva disciplina.

Para o cálculo das médias, variância e desvio padrão de cada estudante, deve-se realizar os seguintes cálculos:

  • Calcule as médias;
  • Gere uma matriz de desvios;
  • Calcule a soma dos quadrados dos desvios;
  • Divida por pelo número de linhas ou número de observações, caara encontrar a matriz de variância-covariância.

A médias de cada coluna pode ser obtidas pela seguinte fórmula: \[ \mathbf{\bar{x}}=\mathbf{1'X} \frac{1}{n} \]

Uma matriz com vetores de médias para uma subtração postarior pode ser gerada pela seguinte equação: \[ \mathbf{\bar{X}}=\mathbf{11'X} \frac{1}{n} \] Os desvios são calculados como a seguir

\[ \mathbf{D} = \mathbf{X} - \mathbf{11'X}\frac{1}{n} \] ou \[ \mathbf{D} = \mathbf{X} - \mathbf{\bar{X}} \] Matriz de variância-covariância:

\[ \mathbf{S} = \mathbf{D'D}\frac{1}{n-1} \]

X<-matrix(c(90, 60, 90,
            90, 90, 30,
            60, 60, 60,
            60, 60, 90,
            30, 30, 30),byrow=T,nrow = 5,ncol = 3)
n<-nrow(X)
uns<-matrix(rep(1,n), ncol = 1)
t(uns)%*%X*(1/n)# médias
##      [,1] [,2] [,3]
## [1,]   66   60   60
uns%*%t(uns)%*%X*(1/n) # matriz com colunas de médias
##      [,1] [,2] [,3]
## [1,]   66   60   60
## [2,]   66   60   60
## [3,]   66   60   60
## [4,]   66   60   60
## [5,]   66   60   60
D <- X-uns%*%t(uns)%*%X*(1/n) # desvios
D
##      [,1] [,2] [,3]
## [1,]   24    0   30
## [2,]   24   30  -30
## [3,]   -6    0    0
## [4,]   -6    0   30
## [5,]  -36  -30  -30
DD<-t(D)%*%D # desvios ao quadrado
DD
##      [,1] [,2] [,3]
## [1,] 2520 1800  900
## [2,] 1800 1800    0
## [3,]  900    0 3600
S <- DD*(1/(n-1)) # Var-Cov
S
##      [,1] [,2] [,3]
## [1,]  630  450  225
## [2,]  450  450    0
## [3,]  225    0  900

Claro que o entendimmento do processo é importante para desenvolvimentos futuros, todavia, o R é capaz executar os mesmos cálculos com funções simples:

colMeans(X)
## [1] 66 60 60
var(X)
##      [,1] [,2] [,3]
## [1,]  630  450  225
## [2,]  450  450    0
## [3,]  225    0  900

No R matriz de variância-covariância pode ser tranformada em matriz de correlações com a função cov2cor()

R<-cov2cor(S)
R
##           [,1]      [,2]      [,3]
## [1,] 1.0000000 0.8451543 0.2988072
## [2,] 0.8451543 1.0000000 0.0000000
## [3,] 0.2988072 0.0000000 1.0000000
sum(diag(S)) # Variância total (também = sum(out$values))
## [1] 1980
det(S)
## [1] 50118750
eigen(S)
## eigen() decomposition
## $values
## [1] 1137.58744  786.38798   56.02458
## 
## $vectors
##           [,1]       [,2]       [,3]
## [1,] 0.6558023 -0.3859988  0.6487899
## [2,] 0.4291978 -0.5163664 -0.7410499
## [3,] 0.6210577  0.7644414 -0.1729644
out<-eigen(S)
V<- out$vectors
sum(out$values) # Variância total (também =sum(diag(S)))
## [1] 1980

5.2 Resolução de sistemas de equações lineares

Como esclarece Weber (1986), a inversa de uma matriz é utilizada principalmente para resolver problemas que envolvem sistemas de equações lineares, como o sistema a seguir que possui três equações:

\[ \begin{align*} b_1 + b_2 + b_3 &=6\\ 3b_1 - 2b_2 + b_3 &= 2\\ 2b_1 + b_2 - b_3 &= 1 \end{align*} \]

que pode ser escrito

\[\begin{bmatrix} 1&1&1\\ 3&-2&1\\ 2&1&-1 \end{bmatrix} \begin{bmatrix} b_1\\ b_2\\ b_3 \end{bmatrix} = \begin{bmatrix} b_1 + b_2 + b3 \\ 3b_1 - 2b_2 + b_3 \\ 2b_1 + b_2 - b_3 \end{bmatrix} \]

ou

\[\mathbf{X}_{m\times n}\mathbf{b}_{n\times 1}=\mathbf{y}_{m\times 1}\]

Se \(X\) for quadrada, \(m=n\) e não singular, ou seja possui uma inversa, o sistema de equações lineares simultâneas pode ser resolvido da seguinte forma:

\[ \mathbf{b}_{n\times 1}=\mathbf{X}_{n\times n}^{-1}\mathbf{y}_{n\times 1} \]

No R, a inversão de matrizes pode ser realizada pelo comando solve() sobre a matriz \(\mathbf{X}\). A solução do sistema pode ser encontrada, multiplicando o valor retornado pelo solve(X) por \(\mathbf{y}\) ou, diretamente, dentro do comando. Os valores no vetor resultante são os valores de \(\mathbf{b}_{n\times 1}\), ou seja, \(b_1=1\), \(b_2=2\) e \(b_3=3\).

X <- matrix(c(1,1,1,
              3,-2,1,
              2,1,-1),3,3, byrow = T)

y <- matrix(c(6,2,1),3,1)
solve(X)     # transposta
##            [,1]        [,2]       [,3]
## [1,] 0.07692308  0.15384615  0.2307692
## [2,] 0.38461538 -0.23076923  0.1538462
## [3,] 0.53846154  0.07692308 -0.3846154
solve(X)%*%y # Equivalente a solve(X,y)
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3
solve(X, y)  # Equivalente a solve(X)%*%y
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3
A<-matrix(c(6,1,4,3,4,-1,1,-2,5),3)
d<-matrix(c(22,12,10),3,1)
solve(A,d) #melhor opção
##      [,1]
## [1,]    2
## [2,]    3
## [3,]    1
solve(A)%*%d
##      [,1]
## [1,]    2
## [2,]    3
## [3,]    1

5.3 Média

\(\bar{Y}=\frac{1}{N} Y_i\) e \(\mbox{var}(Y)=\frac{1}{N} \sum_{i=1}^N (Y_i - \bar{Y})^2\)

\[ A= \begin{pmatrix} 1\\ 1\\ \vdots\\ 1 \end{pmatrix} \]

\[ \frac{1}{N} \mathbf{A}^\top Y = \frac{1}{N} \begin{pmatrix} 1&1&\dots&1 \end{pmatrix} \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} = \frac{1}{N} \sum_{i=1}^N Y_i = \bar{Y} \]

Tomemos o exemplo de Neto, Scarminio, and Bruns (2010), em que o rendimento percentual numa reação química é registrado para diversas temperaturas (x).

x y
40 60
45 70
50 77
55 86
60 91

\[ \mathbf{Y} = \begin{pmatrix} 60\\ 70\\ 77\\ 86\\ 91 \\ \end{pmatrix} \]

\[\bar{Y}= \frac{1}{N} \mathbf{1}^\top \mathbf{Y} = \frac{1}{5} \begin{pmatrix} 1&1&1&1&1 \end{pmatrix} \begin{pmatrix} 60\\ 70\\ 77\\ 86\\ 91 \\ \end{pmatrix}=76,8 \]

#library(UsingR)
data(father.son,package="UsingR")
y <- father.son$sheight
print(mean(y))
## [1] 68.68407
N <- length(y)
Y<- matrix(y,N,1)
A <- matrix(1,N,1)
barY=t(A)%*%Y / N

print(barY)
##          [,1]
## [1,] 68.68407

5.4 Variância

\[ \mathbf{r}\equiv \begin{pmatrix} Y_1 - \bar{Y}\\ \vdots\\ Y_N - \bar{Y} \end{pmatrix}, \frac{1}{N} \mathbf{r}^\top\mathbf{r} = \frac{1}{N}\sum_{i=1}^N (Y_i - \bar{Y})^2 \]

\(r^\top r\)

r <- y - barY
## Warning in y - barY: Recycling array of length 1 in vector-array arithmetic is deprecated.
##   Use c() or as.vector() instead.
crossprod(r)/N
##          [,1]
## [1,] 7.915196
(t(r)%*%r)/N
##          [,1]
## [1,] 7.915196

5.5 Variância

O determinante de uma matriz representa a variância generalizada das várias variáveis. Isto é, ele caracteriza em um único valor quanta variabilidade existe em um conjunto de variáveis.

5.6 Soma dos quadrados

5.7 Modelos lineares

\[ \mathbf{Y} = \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} , \mathbf{X} = \begin{pmatrix} 1&x_1\\ 1&x_2\\ \vdots\\ 1&x_N \end{pmatrix} , \mathbf{\beta} = \begin{pmatrix} \beta_0\\ \beta_1 \end{pmatrix} \mbox{ and } \mathbf{\varepsilon} = \begin{pmatrix} \varepsilon_1\\ \varepsilon_2\\ \vdots\\ \varepsilon_N \end{pmatrix} \]

\[ Y_i = \beta_0 + \beta_1 x_i + \varepsilon_i, i=1,\dots,N \]

\[ , \begin{pmatrix} Y_1\\ Y_2\\ \vdots\\ Y_N \end{pmatrix} = \begin{pmatrix} 1&x_1\\ 1&x_2\\ \vdots\\ 1&x_N \end{pmatrix} \begin{pmatrix} \beta_0\\ \beta_1 \end{pmatrix} + \begin{pmatrix} \varepsilon_1\\ \varepsilon_2\\ \vdots\\ \varepsilon_N \end{pmatrix} \]

\[ \mathbf{Y}=\mathbf{X}\boldsymbol{\beta}+\boldsymbol{\varepsilon} \]

Referências

Chiang, Alpha C. 2004. Matemática Para Economistas. Makron Books, Pearson Education.
Neto, Benı́cio Barros, Ieda Spacino Scarminio, and Roy Edward Bruns. 2010. Como Fazer Experimentos: Pesquisa e Desenvolvimento Na Ciência e Na Indústria. Bookman Editora.
Weber, Jean E. 1986. Matemática Para Economia e Administração. Rio de Janeiro-RJ: Harper & Row do Brasil.
>>>>>>> 86735d789bac53a0c807c7c1b08bb12146a4c3aa